package com.dragon.modules.yuegou.entity.message;

import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.modules.yuegou.enums.Platform;
import com.dragon.modules.yuegou.enums.message.PushStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.time.LocalDateTime;

/**
 * 消息推送实体类<br>
 * 对应的表为：msg_push<br>
 * 
 * @author pbuilder generated
 * @date 2019-04-18 11:24:16
 * @company sgy
 * @version 2.0
 */
@TableName("msg_push")
@ApiModel(description = "消息推送")
public class PushEntity {

    /**  */
	protected String id;

    /** [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM */
	@ApiModelProperty("[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM")
	protected Platform platform;

    /** 推送标题 */
	@ApiModelProperty("推送标题")
	protected String title;

    /** 消息模板ID */
	@ApiModelProperty("消息模板ID")
	protected String templateId;

    /** 参数值列表，使用|隔开，参数本身不允许使用| */
	@ApiModelProperty("参数值列表，使用|隔开，参数本身不允许使用|")
	protected String argValues;

    /** 标题参数值列表，以|隔开 */
	@ApiModelProperty("标题参数值列表，以|隔开")
	protected String titleArgValues;

    /** 跳转地址参数值列表，以|隔开 */
	@ApiModelProperty("跳转地址参数值列表，以|隔开")
	protected String urlArgValues;

    /** 集团条件 */
	@ApiModelProperty("集团条件")
	protected String groupId;

    /** 商圈条件 */
	@ApiModelProperty("商圈条件")
	protected String busdId;

    /** 标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。 */
	@ApiModelProperty("标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。")
	protected String tags;

    /** 标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。 */
	@ApiModelProperty("标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。")
	protected String tagsAnd;

    /** 标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。 */
	@ApiModelProperty("标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。")
	protected String tagsNot;

    /** 是否支持系统消息 */
	@ApiModelProperty("是否支持系统消息")
	protected Boolean supportSystem;

    /** 是否支持短信推送 */
	@ApiModelProperty("是否支持短信推送")
	protected Boolean supportSms;

    /** 是否支持邮件推送 */
	@ApiModelProperty("是否支持邮件推送")
	protected Boolean supportEmail;

    /** 是否支持极光推送 */
	@ApiModelProperty("是否支持极光推送")
	protected Boolean supportJpush;

    /** 支持微信公众号推送 */
	@ApiModelProperty("支持微信公众号推送")
	protected Boolean supportWechat;

    /** 计划推送时间 */
	@ApiModelProperty("计划推送时间")
	protected LocalDateTime scheduleTime;

    /** 推送成功人数 */
	@ApiModelProperty("推送成功人数")
	protected Integer succeedNum;

    /** 推送失败人数 */
	@ApiModelProperty("推送失败人数")
	protected Integer failedNum;

    /** [枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED */
	@ApiModelProperty("[枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED")
	protected PushStatus status;

    /** 创建人ID */
	@ApiModelProperty("创建人ID")
	protected String createdBy;

    /** 创建时间 */
	@ApiModelProperty("创建时间")
	protected LocalDateTime createdTime;

    /** 更新人ID */
	@ApiModelProperty("更新人ID")
	protected String modifiedBy;

    /** 更新时间 */
	@ApiModelProperty("更新时间")
	protected LocalDateTime modifiedTime;

    /** 是否删除 */
	@ApiModelProperty("是否删除")
	protected Boolean del;

    /** 删除人ID */
	@ApiModelProperty("删除人ID")
	protected String delBy;

    /** 删除时间 */
	@ApiModelProperty("删除时间")
	protected LocalDateTime delTime;

	/**
	 * 构造一个空消息推送实体对象
	 */
	public PushEntity(){
		super();
	}

	/**
	 * 依据其它对象的信息构造一个消息推送实体对象
	 * 
	 * @param other 其它对象
	 */
	public PushEntity(PushEntity other){
		super();
     	this.id = other.id;
     	this.platform = other.platform;
     	this.title = other.title;
     	this.templateId = other.templateId;
     	this.argValues = other.argValues;
     	this.titleArgValues = other.titleArgValues;
     	this.urlArgValues = other.urlArgValues;
     	this.groupId = other.groupId;
     	this.busdId = other.busdId;
     	this.tags = other.tags;
     	this.tagsAnd = other.tagsAnd;
     	this.tagsNot = other.tagsNot;
     	this.supportSystem = other.supportSystem;
     	this.supportSms = other.supportSms;
     	this.supportEmail = other.supportEmail;
     	this.supportJpush = other.supportJpush;
     	this.supportWechat = other.supportWechat;
     	this.scheduleTime = other.scheduleTime;
     	this.succeedNum = other.succeedNum;
     	this.failedNum = other.failedNum;
     	this.status = other.status;
     	this.createdBy = other.createdBy;
     	this.createdTime = other.createdTime;
     	this.modifiedBy = other.modifiedBy;
     	this.modifiedTime = other.modifiedTime;
     	this.del = other.del;
     	this.delBy = other.delBy;
     	this.delTime = other.delTime;
	}


	/**
	 * 获取
	 * 
	 * @return id 
	 */
	public String getId() {
		return id;
	}
  	
	/**
	 * 设置
	 * 
	 * @param id 
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获取[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 * 
	 * @return platform [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 */
	public Platform getPlatform() {
		return platform;
	}
  	
	/**
	 * 设置[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 * 
	 * @param platform [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 */
	public void setPlatform(Platform platform) {
		this.platform = platform;
	}

	/**
	 * 获取推送标题
	 * 
	 * @return title 推送标题
	 */
	public String getTitle() {
		return title;
	}
  	
	/**
	 * 设置推送标题
	 * 
	 * @param title 推送标题
	 */
	public void setTitle(String title) {
		this.title = title;
	}

	/**
	 * 获取消息模板ID
	 * 
	 * @return templateId 消息模板ID
	 */
	public String getTemplateId() {
		return templateId;
	}
  	
	/**
	 * 设置消息模板ID
	 * 
	 * @param templateId 消息模板ID
	 */
	public void setTemplateId(String templateId) {
		this.templateId = templateId;
	}

	/**
	 * 获取参数值列表，使用|隔开，参数本身不允许使用|
	 * 
	 * @return argValues 参数值列表，使用|隔开，参数本身不允许使用|
	 */
	public String getArgValues() {
		return argValues;
	}
  	
	/**
	 * 设置参数值列表，使用|隔开，参数本身不允许使用|
	 * 
	 * @param argValues 参数值列表，使用|隔开，参数本身不允许使用|
	 */
	public void setArgValues(String argValues) {
		this.argValues = argValues;
	}

	/**
	 * 获取标题参数值列表，以|隔开
	 * 
	 * @return titleArgValues 标题参数值列表，以|隔开
	 */
	public String getTitleArgValues() {
		return titleArgValues;
	}
  	
	/**
	 * 设置标题参数值列表，以|隔开
	 * 
	 * @param titleArgValues 标题参数值列表，以|隔开
	 */
	public void setTitleArgValues(String titleArgValues) {
		this.titleArgValues = titleArgValues;
	}

	/**
	 * 获取跳转地址参数值列表，以|隔开
	 * 
	 * @return urlArgValues 跳转地址参数值列表，以|隔开
	 */
	public String getUrlArgValues() {
		return urlArgValues;
	}
  	
	/**
	 * 设置跳转地址参数值列表，以|隔开
	 * 
	 * @param urlArgValues 跳转地址参数值列表，以|隔开
	 */
	public void setUrlArgValues(String urlArgValues) {
		this.urlArgValues = urlArgValues;
	}

	/**
	 * 获取集团条件
	 * 
	 * @return groupId 集团条件
	 */
	public String getGroupId() {
		return groupId;
	}
  	
	/**
	 * 设置集团条件
	 * 
	 * @param groupId 集团条件
	 */
	public void setGroupId(String groupId) {
		this.groupId = groupId;
	}

	/**
	 * 获取商圈条件
	 * 
	 * @return busdId 商圈条件
	 */
	public String getBusdId() {
		return busdId;
	}
  	
	/**
	 * 设置商圈条件
	 * 
	 * @param busdId 商圈条件
	 */
	public void setBusdId(String busdId) {
		this.busdId = busdId;
	}

	/**
	 * 获取标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。
	 * 
	 * @return tags 标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。
	 */
	public String getTags() {
		return tags;
	}
  	
	/**
	 * 设置标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。
	 * 
	 * @param tags 标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。
	 */
	public void setTags(String tags) {
		this.tags = tags;
	}

	/**
	 * 获取标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。
	 * 
	 * @return tagsAnd 标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。
	 */
	public String getTagsAnd() {
		return tagsAnd;
	}
  	
	/**
	 * 设置标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。
	 * 
	 * @param tagsAnd 标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。
	 */
	public void setTagsAnd(String tagsAnd) {
		this.tagsAnd = tagsAnd;
	}

	/**
	 * 获取标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。
	 * 
	 * @return tagsNot 标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。
	 */
	public String getTagsNot() {
		return tagsNot;
	}
  	
	/**
	 * 设置标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。
	 * 
	 * @param tagsNot 标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。
	 */
	public void setTagsNot(String tagsNot) {
		this.tagsNot = tagsNot;
	}

	/**
	 * 获取是否支持系统消息
	 * 
	 * @return supportSystem 是否支持系统消息
	 */
	public Boolean getSupportSystem() {
		return supportSystem;
	}
  	
	/**
	 * 设置是否支持系统消息
	 * 
	 * @param supportSystem 是否支持系统消息
	 */
	public void setSupportSystem(Boolean supportSystem) {
		this.supportSystem = supportSystem;
	}

	/**
	 * 获取是否支持短信推送
	 * 
	 * @return supportSms 是否支持短信推送
	 */
	public Boolean getSupportSms() {
		return supportSms;
	}
  	
	/**
	 * 设置是否支持短信推送
	 * 
	 * @param supportSms 是否支持短信推送
	 */
	public void setSupportSms(Boolean supportSms) {
		this.supportSms = supportSms;
	}

	/**
	 * 获取是否支持邮件推送
	 * 
	 * @return supportEmail 是否支持邮件推送
	 */
	public Boolean getSupportEmail() {
		return supportEmail;
	}
  	
	/**
	 * 设置是否支持邮件推送
	 * 
	 * @param supportEmail 是否支持邮件推送
	 */
	public void setSupportEmail(Boolean supportEmail) {
		this.supportEmail = supportEmail;
	}

	/**
	 * 获取是否支持极光推送
	 * 
	 * @return supportJpush 是否支持极光推送
	 */
	public Boolean getSupportJpush() {
		return supportJpush;
	}
  	
	/**
	 * 设置是否支持极光推送
	 * 
	 * @param supportJpush 是否支持极光推送
	 */
	public void setSupportJpush(Boolean supportJpush) {
		this.supportJpush = supportJpush;
	}

	/**
	 * 获取支持微信公众号推送
	 * 
	 * @return supportWechat 支持微信公众号推送
	 */
	public Boolean getSupportWechat() {
		return supportWechat;
	}
  	
	/**
	 * 设置支持微信公众号推送
	 * 
	 * @param supportWechat 支持微信公众号推送
	 */
	public void setSupportWechat(Boolean supportWechat) {
		this.supportWechat = supportWechat;
	}

	/**
	 * 获取计划推送时间
	 * 
	 * @return scheduleTime 计划推送时间
	 */
	public LocalDateTime getScheduleTime() {
		return scheduleTime;
	}
  	
	/**
	 * 设置计划推送时间
	 * 
	 * @param scheduleTime 计划推送时间
	 */
	public void setScheduleTime(LocalDateTime scheduleTime) {
		this.scheduleTime = scheduleTime;
	}

	/**
	 * 获取推送成功人数
	 * 
	 * @return succeedNum 推送成功人数
	 */
	public Integer getSucceedNum() {
		return succeedNum;
	}
  	
	/**
	 * 设置推送成功人数
	 * 
	 * @param succeedNum 推送成功人数
	 */
	public void setSucceedNum(Integer succeedNum) {
		this.succeedNum = succeedNum;
	}

	/**
	 * 获取推送失败人数
	 * 
	 * @return failedNum 推送失败人数
	 */
	public Integer getFailedNum() {
		return failedNum;
	}
  	
	/**
	 * 设置推送失败人数
	 * 
	 * @param failedNum 推送失败人数
	 */
	public void setFailedNum(Integer failedNum) {
		this.failedNum = failedNum;
	}

	/**
	 * 获取[枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED
	 * 
	 * @return status [枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED
	 */
	public PushStatus getStatus() {
		return status;
	}
  	
	/**
	 * 设置[枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED
	 * 
	 * @param status [枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED
	 */
	public void setStatus(PushStatus status) {
		this.status = status;
	}

	/**
	 * 获取创建人ID
	 * 
	 * @return createdBy 创建人ID
	 */
	public String getCreatedBy() {
		return createdBy;
	}
  	
	/**
	 * 设置创建人ID
	 * 
	 * @param createdBy 创建人ID
	 */
	public void setCreatedBy(String createdBy) {
		this.createdBy = createdBy;
	}

	/**
	 * 获取创建时间
	 * 
	 * @return createdTime 创建时间
	 */
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}
  	
	/**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 */
	public void setCreatedTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
	}

	/**
	 * 获取更新人ID
	 * 
	 * @return modifiedBy 更新人ID
	 */
	public String getModifiedBy() {
		return modifiedBy;
	}
  	
	/**
	 * 设置更新人ID
	 * 
	 * @param modifiedBy 更新人ID
	 */
	public void setModifiedBy(String modifiedBy) {
		this.modifiedBy = modifiedBy;
	}

	/**
	 * 获取更新时间
	 * 
	 * @return modifiedTime 更新时间
	 */
	public LocalDateTime getModifiedTime() {
		return modifiedTime;
	}
  	
	/**
	 * 设置更新时间
	 * 
	 * @param modifiedTime 更新时间
	 */
	public void setModifiedTime(LocalDateTime modifiedTime) {
		this.modifiedTime = modifiedTime;
	}

	/**
	 * 获取是否删除
	 * 
	 * @return del 是否删除
	 */
	public Boolean getDel() {
		return del;
	}
  	
	/**
	 * 设置是否删除
	 * 
	 * @param del 是否删除
	 */
	public void setDel(Boolean del) {
		this.del = del;
	}

	/**
	 * 获取删除人ID
	 * 
	 * @return delBy 删除人ID
	 */
	public String getDelBy() {
		return delBy;
	}
  	
	/**
	 * 设置删除人ID
	 * 
	 * @param delBy 删除人ID
	 */
	public void setDelBy(String delBy) {
		this.delBy = delBy;
	}

	/**
	 * 获取删除时间
	 * 
	 * @return delTime 删除时间
	 */
	public LocalDateTime getDelTime() {
		return delTime;
	}
  	
	/**
	 * 设置删除时间
	 * 
	 * @param delTime 删除时间
	 */
	public void setDelTime(LocalDateTime delTime) {
		this.delTime = delTime;
	}

    public String toString() {
		return new StringBuilder().append("PushEntity{").
			append("id=").append(id).
			append(",platform=").append(platform).
			append(",title=").append(title).
			append(",templateId=").append(templateId).
			append(",argValues=").append(argValues).
			append(",titleArgValues=").append(titleArgValues).
			append(",urlArgValues=").append(urlArgValues).
			append(",groupId=").append(groupId).
			append(",busdId=").append(busdId).
			append(",tags=").append(tags).
			append(",tagsAnd=").append(tagsAnd).
			append(",tagsNot=").append(tagsNot).
			append(",supportSystem=").append(supportSystem).
			append(",supportSms=").append(supportSms).
			append(",supportEmail=").append(supportEmail).
			append(",supportJpush=").append(supportJpush).
			append(",supportWechat=").append(supportWechat).
			append(",scheduleTime=").append(scheduleTime).
			append(",succeedNum=").append(succeedNum).
			append(",failedNum=").append(failedNum).
			append(",status=").append(status).
			append(",createdBy=").append(createdBy).
			append(",createdTime=").append(createdTime).
			append(",modifiedBy=").append(modifiedBy).
			append(",modifiedTime=").append(modifiedTime).
			append(",del=").append(del).
			append(",delBy=").append(delBy).
			append(",delTime=").append(delTime).
			append('}').toString();
    }

	/**
	 * 复制对象
	 * 
	 * @return 复制后的新实体对象
	 */
	public PushEntity copy() {
		return new PushEntity(this);
	}

    /**  */
	public static final String COL_ID = "id";

    /** [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM */
	public static final String COL_PLATFORM = "platform";

    /** 推送标题 */
	public static final String COL_TITLE = "title";

    /** 消息模板ID */
	public static final String COL_TEMPLATE_ID = "template_id";

    /** 参数值列表，使用|隔开，参数本身不允许使用| */
	public static final String COL_ARG_VALUES = "arg_values";

    /** 标题参数值列表，以|隔开 */
	public static final String COL_TITLE_ARG_VALUES = "title_arg_values";

    /** 跳转地址参数值列表，以|隔开 */
	public static final String COL_URL_ARG_VALUES = "url_arg_values";

    /** 集团条件 */
	public static final String COL_GROUP_ID = "group_id";

    /** 商圈条件 */
	public static final String COL_BUSD_ID = "busd_id";

    /** 标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。 */
	public static final String COL_TAGS = "tags";

    /** 标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。 */
	public static final String COL_TAGS_AND = "tags_and";

    /** 标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。 */
	public static final String COL_TAGS_NOT = "tags_not";

    /** 是否支持系统消息 */
	public static final String COL_SUPPORT_SYSTEM = "support_system";

    /** 是否支持短信推送 */
	public static final String COL_SUPPORT_SMS = "support_sms";

    /** 是否支持邮件推送 */
	public static final String COL_SUPPORT_EMAIL = "support_email";

    /** 是否支持极光推送 */
	public static final String COL_SUPPORT_JPUSH = "support_jpush";

    /** 支持微信公众号推送 */
	public static final String COL_SUPPORT_WECHAT = "support_wechat";

    /** 计划推送时间 */
	public static final String COL_SCHEDULE_TIME = "schedule_time";

    /** 推送成功人数 */
	public static final String COL_SUCCEED_NUM = "succeed_num";

    /** 推送失败人数 */
	public static final String COL_FAILED_NUM = "failed_num";

    /** [枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED */
	public static final String COL_STATUS = "status";

    /** 创建人ID */
	public static final String COL_CREATED_BY = "created_by";

    /** 创建时间 */
	public static final String COL_CREATED_TIME = "created_time";

    /** 更新人ID */
	public static final String COL_MODIFIED_BY = "modified_by";

    /** 更新时间 */
	public static final String COL_MODIFIED_TIME = "modified_time";

    /** 是否删除 */
	public static final String COL_DEL = "del";

    /** 删除人ID */
	public static final String COL_DEL_BY = "del_by";

    /** 删除时间 */
	public static final String COL_DEL_TIME = "del_time";
}
